<?php
class Arm_Log
{
    /**
     * Максимальный рамер всех лог файлов.
     * 
     * @var int
     */
    const LOG_MAX_SIZE = 2048000;
	/**
	 * Запись в панель отладки
	 * @var array
	 */
    private static $_panelDebug  = array(); 
    
    /**
     * Флаг для записи в панель лог сообщений.
     * @var unknown_type
     */
    private static $_writePanel = null;
    
   /**
    * Запись в директорию temp/log/system_nameFile_log.log
    * @param unknown_type $nameFile
    * @return Zend_Log
    */
   public static function system($message = null,  $nameFile=null,  $priority = Zend_Log::INFO)
   {
       if(false === is_string($message)) {
           $message = print_r($message, true);
       } 
       if($nameFile === null) {
           $nameFile = 'log';
       }
   	   self::_checkDirLog();
   	   $pathFile = Arm_Core::getPathApplication() . 'temp/log/system_' . $nameFile .'.log';
   	   self::_logSizeMaxCheck($pathFile);
       $writer = new Zend_Log_Writer_Stream($pathFile);
       $log = new Zend_Log($writer);
       if($message !== null) {
            $log->log($message, $priority);
       }
       return $log;
   }
   
   /**
    * Проверит если лог файл превышает максимальный размер то метод
    * @todo пока просто удалит, в дальнейшем создаст архив файла.
    * @param $file
    */
   protected static function _logSizeMaxCheck($file)
   {
       if(is_file($file) === false) {
           return;
       }
       if(filesize($file) > self::LOG_MAX_SIZE) {
           unlink($file);
           return;
       }
       return;
   }
   
   /**
    * Проверит создана ли дериктория log 
    * в директории temp
    */
   protected static function _checkDirLog()
   {
     $path = Arm_Core::getPathApplication() . 'temp/log';
     if(is_dir($path) === false) {
     	mkdir($path);
     }
     return;
   }
   
   /**
    * Запись лог сообщения в панель отладки, если панель не включена запись
    * происходить не будет. Логирования в пенель можно не удалять,
    * метод не русурсоемкий.
    * 
    * @param string $message
    */
   public static function panelDebug($message, $priority = Zend_Log::INFO)
   {
       
    if(self::$_writePanel === null) {
        if(Arm_Core::getConfigApplication()->system->debugpanel === '0') {
            self::$_writePanel = false;
        } else {
            self::$_writePanel = true;
        }
     }
     if(false === self::$_writePanel) {
         return;
     }
     self::$_panelDebug[] = array('priority'=>$priority, 'message'=>$message);  
     return;
   }
   
   /**
    * Возвращает сообщения лога для панели отладки.
    * 
    * @return array
    */
   public static function getMessagePanelDebug()
   {
      return self::$_panelDebug;
   }
   
}